 <?php 
  $arr = ["aa"=>"jakdjak","BB"=>"将打卡机的卡家","cD"=>"dadaAAAA"];
 //将数组的所有的键都转换为大写字母或小写字母 (CASE_LOWER CASE_UPPER),返回改变后的数组,不改变原数组
 var_dump(array_change_key_case($arr,CASE_LOWER));
  
  //把一个数组按size分割为新的数组块,默认是返回一个索引数组
 var_dump(array_chunk($arr, 2,true));


 $arr2 =["1111","2222","3333"];

//通过合并两个数组来创建一个新数组，其中的一个数组元素为键名，另一个数组元素为键值
 var_dump(array_combine($arr, $arr2));

// 统计数组中所有值出现的次数,返回一个关联数组，其元素的键名是原数组的值，键值是该值在原数组中出现的次数。用==匹配的，相同的字符串和数字是相等的
$arr3 =["1111","2222","3333","3333",3333];
 var_dump(array_count_values($arr3));

//用给定的键值填充数组 param:开始索引，填充的数量，值＝》［3=>"sss",4=>"sss",5=>"sss"］,php的数组不一定都是从0开始
 var_dump(array_fill(3, 3, "sss"));

//用给定的指定键名的键值填充数组。
var_dump(array_fill_keys(["2","3",4,"ds"], "valuewww"));


var_dump(array_filter($arr3,function($v){
 // instanceof 确定一个对象是"类"的实例、类的子类，还是实现了某个特定接口，并进行相应的操作
 return is_int($v);

}));


//比较数组，返回两个数组的交集（只比较键值)
var_dump(array_intersect($arr2, $arr3));
//比较数组，返回两个数组的交集（比较键名和键值）
var_dump(array_intersect_assoc($arr2, $arr3));


//传入是键，两队键值对在数组的位置，也必须相同才能判定为相等
//比较键名和键值,感觉这个方法没用
$arr4 =["aa"=>"jakdjak","BB"=>"将打卡机的卡家",1111,"2222",10=>"3333","key3"=>"dasdasd"];
//如果第一个参数 <, =, > 第二个参数，相应地比较函数必须返回一个 <, =, > 0 的整数。
var_dump(array_intersect_uassoc($arr, $arr4,function ($k1,$k2) {
 if ($k1===$k2)
	{
	return 0;
	}
	return ($k1>$k2)?1:-1;

}));

function myfunction($a,$b) {
	echo $a."====".$b."<br>";
	if ($a===$b)
	{
	return 0;
	}
	return ($a>$b)?1:-1;

}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("d"=>"red","b"=>"green","e"=>"blue");

$result=array_intersect_uassoc($a1,$a2,"myfunction");
print_r($result);

//检查键存不存在
 var_dump(array_key_exists('b', $a1));

//返回所有的键名
 var_dump(array_keys($arr4));

var_dump(array_values($arr4));
 var_dump(array_map(function ($key) {
 	//$key是值
  echo "<br>".$key."<br>";
  return $key;

 }, $arr4));
  

var_dump(array_merge($arr2,$arr3));
//如果是索引数组，相同的键不会覆盖，如果是关联数组，后面的键值会覆盖前面的键值
var_dump(array_merge($a1,$a2));

//多个数组合并，，，相同的键不会覆盖，，会把相同的键组成一个新的索引数组，键名是键，值是索引数组
var_dump(array_merge_recursive($a1,$a2));


//如果您将 size 参数设置为负数，该函数会在原始数组之前插入新的元素（参见下面的实例）。
// 注释：如果 size 参数小于原始数组的长度，该函数不会删除任何元素。
var_dump(array_pad($a1, -1, "11"));

//array_pop() 函数删除数组中的最后一个元素,返回删除的值
//会改变原数组
var_dump(array_pop($arr));

var_dump(array_push($arr,"mkoa"));
//删除数组第一个元素
var_dump(array_shift($arr));
//返回一个子数组
var_dump(array_slice($arr, 0,2,false));
//移除指定位置元素，用新元素替换
var_dump(array_splice($arr, 0,1,["9"=>"qwe","da"=>"大三大四的"]));

//使数组中每个元素执行方法
array_walk($arr, function ($value,$key) {

 echo "执行".$key."=>".$value."<br>";

});
$a = 'aaaa';
$b = 'bbbb';
$c = 'cccc';
//使用变量名与值创建一个数组
var_dump(compact('a','b','c'));
var_dump(current($a1));

$people = array("Peter", "Joe", "Glenn", "Cleveland");
print_r (each($people));

//把数组的值赋给一些变量
list($a,$b,$c) = $people;
echo "$a ,$b, $c <br>";

 var_dump($arr);

 ?>